/**
 * 需求: 封装一个函数, 用来在某个文件夹中寻找「内容包含关键字的文件路径」
 * 函数名: find
 * 参数:
 *  dir 目录路径
 *  keyword 关键字
 *
 * 返回值:
 *  返回数组
 * 示例:
 *  find('./', 'hello', []);
 */
const path = require("path");
const fs = require("fs");

//查找
function find(dir, keyword, result = []) {
  //将路径转为绝对路径
  dir = path.resolve(__dirname, dir);
  //读取文件夹的文件列表
  let files = fs.readdirSync(dir);
  //检测
  files.forEach((item) => {
    //递归调用 find 函数
    let stats = fs.statSync(path.resolve(dir, item));
    //判断当前的资源是否为文件夹
    if (stats.isDirectory()) {
      //递归调用
      find(path.resolve(dir, item), keyword, result);
    }else{
      //判断
      if (checkFileHasKeyword(path.resolve(dir, item), keyword)) {
        result.push(path.resolve(dir, item));
      }
    }
  });

  return result;
}
let result = find("../", "hello");
console.log(result);

//检查单个文件中是否存在关键
function checkFileHasKeyword(file, keyword) {
  //读取文件中的内容
  let content = fs.readFileSync(file, "utf8");
  //检测内容中是否包含关键字
  return content.includes(keyword);
}
